package proxy04;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.util.Date;

/**
 * ClassName: HandlerImpl
 * Package: proxy03
 * Description:
 *
 * @Author 刘英杰
 * @Create 2025/2/3 14:23
 * @Version 1.0
 */

public class HandlerImpl implements InvocationHandler {
    private LaoWang laoWang = new LaoWang();

//    @Override
//    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//        long startTime = new Date().getTime();
//
//        method.invoke(laoWang, args);//如果当前代理类对象调用的是eat()
//        //最终转调过来,method.invoke(lw) => lw.eat();
//        //如果当前代理类对象调用的是play()
//        //最终转调过来,method.invoke(lw) => lw.play();
//        //如果当前代理类对象调用的是sleep()
//        //最终转调过来,method.invoke(lw) => lw.sleep();
//
//        long endTime = new Date().getTime();
//
//        System.out.println("所需要的时间: " + (endTime - startTime));
//        return null;
//    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

        Object returnVal = method.invoke(laoWang, args);

        return returnVal;
    }
}
